/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Service;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import DB.FichaPodologa;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import org.hibernate.Criteria;
import DB.HibernateUtil;
/**
 *
 * @author Jacqueline
 */
@WebService()
public class FichaPodologaWS {
    @WebMethod(operationName = "agregarFichaPodologa")
    public Long agregarFichaPodologa(@WebParam(name = "paciente") String paciente,
            @WebParam(name = "profesional") String profesional,
            @WebParam(name = "calzadoAdecuado") boolean calzadoAdecuado,
            @WebParam(name = "problemaOrtopedico") boolean problemaOrtopedico,
            @WebParam(name = "caminaConAyuda") boolean caminaConAyuda,
            @WebParam(name = "diabetesMellitus") boolean diabetesMellitus,
            @WebParam(name = "hta") boolean hta,
            @WebParam(name = "ulceracionPrevia") boolean ulceracionPrevia,
            @WebParam(name = "amputacionPrevia") boolean amputacionPrevia,
            @WebParam(name = "alergias") boolean alergias,
            @WebParam(name = "varices") boolean varices,
            @WebParam(name = "enfermedadesCronicas") boolean enfermedadesCronicas,
            @WebParam(name = "numeroCalzado") String numeroCalzado,
            @WebParam(name = "medicamentos") String medicamentos,
            @WebParam(name = "activo") boolean activo) {


        DB.FichaPodologa fichaPodo= new DB.FichaPodologa();
        fichaPodo.setPaciente(paciente);
        fichaPodo.setProfesional(profesional);
        fichaPodo.setCalzadoAdecuado(calzadoAdecuado);
        fichaPodo.setProblemaOrtopedico(problemaOrtopedico);
        fichaPodo.setCaminaConAyuda(caminaConAyuda);
        fichaPodo.setDiabetesMellitus(diabetesMellitus);
        fichaPodo.setHta(hta);
        fichaPodo.setUlceracionPrevia(ulceracionPrevia);
        fichaPodo.setAmputacionPrevia(amputacionPrevia);
        fichaPodo.setAlergias(alergias);
        fichaPodo.setVarices(varices);
        fichaPodo.setEnfermedadesCronicas(enfermedadesCronicas);
        fichaPodo.setNumeroCalzado(numeroCalzado);
        fichaPodo.setMedicamentos(medicamentos);
        fichaPodo.setActivo(activo);
        ControladorDeObjetos.saveObject(fichaPodo);
        return fichaPodo.getId();
    }

    @WebMethod(operationName = "listarFichasPodo")
    public List<FichaPodologa> listarFichasPodo() {
        return ControladorDeObjetos.getAllObjectByClassType(FichaPodologa.class);
    }

    @WebMethod(operationName = "cargarFichaPodo")
    public Object cargarFichaPodo(@WebParam(name = "Id") Long Id){
            return ControladorDeObjetos.loadObjectByLongId(Id, FichaPodologa.class);
    }

    @WebMethod(operationName = "modificarFichaPodologa")
    public boolean modificarFichaPodologa(@WebParam(name = "Id") Long Id,
            @WebParam(name = "paciente") String paciente,
            @WebParam(name = "profesional") String profesional,
            @WebParam(name = "calzadoAdecuado") boolean calzadoAdecuado,
            @WebParam(name = "problemaOrtopedico") boolean problemaOrtopedico,
            @WebParam(name = "caminaConAyuda") boolean caminaConAyuda,
            @WebParam(name = "diabetesMellitus") boolean diabetesMellitus,
            @WebParam(name = "hta") boolean hta,
            @WebParam(name = "ulceracionPrevia") boolean ulceracionPrevia,
            @WebParam(name = "amputacionPrevia") boolean amputacionPrevia,
            @WebParam(name = "alergias") boolean alergias,
            @WebParam(name = "varices") boolean varices,
            @WebParam(name = "enfermedadesCronicas") boolean enfermedadesCronicas,
            @WebParam(name = "numeroCalzado") String numeroCalzado,
            @WebParam(name = "medicamentos") String medicamentos,
            @WebParam(name = "activo") boolean activo) {


        FichaPodologa fichaPodo = (FichaPodologa) ControladorDeObjetos.loadObjectByLongId(Id,FichaPodologa.class);
        fichaPodo.setPaciente(paciente);
        fichaPodo.setProfesional(profesional);
        fichaPodo.setCalzadoAdecuado(calzadoAdecuado);
        fichaPodo.setProblemaOrtopedico(problemaOrtopedico);
        fichaPodo.setCaminaConAyuda(caminaConAyuda);
        fichaPodo.setDiabetesMellitus(diabetesMellitus);
        fichaPodo.setHta(hta);
        fichaPodo.setUlceracionPrevia(ulceracionPrevia);
        fichaPodo.setAmputacionPrevia(amputacionPrevia);
        fichaPodo.setAlergias(alergias);
        fichaPodo.setVarices(varices);
        fichaPodo.setEnfermedadesCronicas(enfermedadesCronicas);
        fichaPodo.setNumeroCalzado(numeroCalzado);
        fichaPodo.setMedicamentos(medicamentos);
        fichaPodo.setActivo(activo);
        return ControladorDeObjetos.updateObject(fichaPodo);
    }

    @WebMethod(operationName = "modificarFichaPodo")
    public boolean modificarFichaPodo(@WebParam(name = "FichaPodologa")FichaPodologa fichaPodologa){
        return ControladorDeObjetos.updateObject(fichaPodologa);
    }

     @WebMethod(operationName = "filtrarFichasPodologa")
    public List<FichaPodologa> filtrarFichasPodologa(@WebParam(name = "buscar") String buscar) {
        Session s = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction trans = s.beginTransaction();
        Criteria c = s.createCriteria(FichaPodologa.class).add(Restrictions.or(Restrictions.or(Restrictions.ilike("paciente", "%" + buscar + "%"),
                Restrictions.ilike("numeroCalzado", "%" + buscar + "%")),
                (Restrictions.ilike("medicamentos", "%" + buscar + "%"))));
        List l = c.list();
        s.close();
        return l;
    }
}
